package io.github.cubelitblade.librarymanagementbackend.vo;

import io.github.cubelitblade.librarymanagementbackend.entity.Book;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 表示用于前端展示的书籍的简短信息。
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BookBriefVO {
    private Integer id;
    private String title;
    private String author;
    private Integer stock;
    private String img;

    /**
     * 工厂方法。通过已有的 {@link Book} 对象创建数据简短的 {@link BookBriefVO} 对象，从而向前端传递简短的图书信息。
     * @param book 原有的 {@link Book} 对象。
     * @return 脱敏后可安全传递的 {@link BookBriefVO} 对象。
     */
    public static BookBriefVO of(Book book) {
        return new BookBriefVO(book.getId(), book.getTitle(), book.getAuthor(), book.getStock(), book.getImg());
    }
}
